// Mouse Driver
// (c) jimon game studio

#ifndef JEH_IMOUSEDRIVER
#define JEH_IMOUSEDRIVER

#include "jeUnknown.h"
#include "jeStl.h"

namespace je
{
	namespace input
	{
		//! Mouse Driver
		class IMouseDriver:public je::jeUnknown
		{
		protected:
			s32 WheelSpeed;
		public:
			//! Constructor
			IMouseDriver()
				:WheelSpeed(0)
			{
			}

			//! Destructor
			virtual ~IMouseDriver()
			{
			}

			//! Set Position
			virtual void SetPosition(const jeVector2df & NewPosition) = 0;

			//! Get Position
			virtual jeVector2df GetPosition() = 0;

			//! Get Mouse Wheel Position
			virtual s32 GetMouseWheelPosition() = 0;

			//! Get Mouse Wheel Position
			virtual s32 GetMouseWheelSpeed()
			{
				s32 WheelPos = GetMouseWheelPosition();
				s32 Speed = WheelPos - WheelSpeed;
				WheelSpeed = WheelPos;
				return Speed;
			}

			//! Flush Mouse Wheel
			virtual void FlushMouseWheel() = 0;

			//! Set cursor visible
			virtual void SetCursorVisible(u1 Visible) = 0;

			//! Return true if cursor visible
			virtual u1 IsCursorVisible() = 0;
		};
	}
}

#endif
